package com.fand.platform.authority.service;

import java.util.List;
import java.util.Map;

import com.fand.cache.support.CacheEvictSupport;
import com.fand.dto.PaginationDto;
import com.fand.platform.authority.dto.RoleDto;
import com.fand.platform.authority.dto.RoleReOpAcDto;

/**
 * 角色服务
 *
 * @author yaoHT
 */
public interface RoleService extends CacheEvictSupport {
	String BEAN_ID = "com.fand.platform.authority.service.RoleService";

	String CACHE_NAME = BEAN_ID + "Cache";
	/**
	 * 保存:角色
	 * 
	 * @param saveRole
	 *            角色对象
	 * 
	 * @return 角色对象
	 */
	RoleDto saveRoleByIdOrCodeForRole(RoleDto saveRole);

	/**
	 * 保存:角色
	 * 
	 * @param saveRole
	 *            角色对象
	 * 
	 * @return 角色对象
	 */
	RoleDto saveRoleBy2ForRole(RoleDto saveRole);

	/**
	 * 删除:角色
	 * 
	 * @param deleteRole
	 *            角色对象
	 * 
	 * @return 影响行数
	 */
	int deleteRoleBy1(RoleDto deleteRole);

	/**
	 * 删除:角色
	 * 
	 * @param deleteRole
	 *            角色对象
	 * 
	 * @return 影响行数
	 */
	int deleteRoleByIds(RoleDto deleteRole);

	/**
	 * 设置:角色
	 * 
	 * @param setRole
	 *            角色对象
	 * 
	 * @return 影响行数
	 */
	int setRoleBy1(RoleDto setRole);

	/**
	 * 设置:角色
	 * 
	 * @param setRole
	 *            角色对象
	 * 
	 * @return 影响行数
	 */
	int setRoleBy2(RoleDto setRole);

	/**
	 * 读取:角色
	 * 
	 * @param readRole
	 *            角色对象
	 * 
	 * @return 角色对象
	 */
	Integer readRoleByCodeNqIdForInteger(RoleDto readRole);

	/**
	 * 读取:角色
	 * 
	 * @param readRole
	 *            角色对象
	 * 
	 * @return 角色对象
	 */
	Integer readRoleBy2ForInteger(RoleDto readRole);

	/**
	 * 读取:角色
	 * 
	 * @param readListRole
	 *            角色对象
	 * 
	 * @return 角色对象集合
	 */
	List<Integer> readListRoleBy1(RoleDto readRole);

	/**
	 * 读取:角色
	 * 
	 * @param readListRole
	 *            角色对象
	 * 
	 * @return 角色对象集合
	 */
	List<Integer> readListRoleBy2(RoleDto readRole);

	/**
	 * 查询:角色
	 * 
	 * @param getRole
	 *            角色对象
	 * 
	 * @return 角色对象
	 */
	RoleDto getRoleBy1(RoleDto getRole);

	/**
	 * 查询:角色
	 * 
	 * @param getRole
	 *            角色对象
	 * 
	 * @return 角色对象
	 */
	RoleDto getRoleById(RoleDto getRole);

	/**
	 * 查询:角色
	 * 
	 * @param findRole
	 *            角色对象
	 * 
	 * @return 角色对象集合
	 */
	List<RoleDto> findRoleBy1(RoleDto findRole);

	/**
	 * 查询:角色
	 * 
	 * @param findRole
	 *            角色对象
	 * 
	 * @return 角色对象集合
	 */
	List<RoleDto> findRoleBy2(RoleDto findRole);
	
	/**
	 * 分页:角色
	 * 
	 * @param paginationRole
	 *            角色对象
	 * 
	 * @return 角色分页对象
	 */
	PaginationDto<RoleDto> paginationRoleBy1ForRoleList(RoleDto paginationRole);
			
	/**
	 * 分页
	 * 
	 * @param paginationRole
	 *            角色对象
	 * 
	 * @return 角色分页对象
	 */
	PaginationDto<Map<String, Object>> paginationRoleBy1ForMapList(RoleDto paginationRole);
	/**
	 * 保存:角色、资源与操作动作
	 * 
	 * @param saveRoleReOpAc
	 *            角色、资源与操作动作对象
	 * 
	 * @return 角色、资源与操作动作对象
	 */
	RoleReOpAcDto saveRoleReOpAcByIdOrCodeForRoleReOpAc(RoleReOpAcDto saveRoleReOpAc);

	/**
	 * 保存:角色、资源与操作动作
	 * 
	 * @param saveRoleReOpAc
	 *            角色、资源与操作动作对象
	 * 
	 * @return 角色、资源与操作动作对象
	 */
	RoleReOpAcDto saveRoleReOpAcBy2ForRoleReOpAc(RoleReOpAcDto saveRoleReOpAc);

	/**
	 * 删除:角色、资源与操作动作
	 * 
	 * @param deleteRoleReOpAc
	 *            角色、资源与操作动作对象
	 * 
	 * @return 影响行数
	 */
	int deleteRoleReOpAcBy1(RoleReOpAcDto deleteRoleReOpAc);

	/**
	 * 删除:角色、资源与操作动作
	 * 
	 * @param deleteRoleReOpAc
	 *            角色、资源与操作动作对象
	 * 
	 * @return 影响行数
	 */
	int deleteRoleReOpAcByIds(RoleReOpAcDto deleteRoleReOpAc);

	/**
	 * 设置:角色、资源与操作动作
	 * 
	 * @param setRoleReOpAc
	 *            角色、资源与操作动作对象
	 * 
	 * @return 影响行数
	 */
	int setRoleReOpAcBy1(RoleReOpAcDto setRoleReOpAc);

	/**
	 * 设置:角色、资源与操作动作
	 * 
	 * @param setRoleReOpAc
	 *            角色、资源与操作动作对象
	 * 
	 * @return 影响行数
	 */
	int setRoleReOpAcBy2(RoleReOpAcDto setRoleReOpAc);

	/**
	 * 读取:角色、资源与操作动作
	 * 
	 * @param readRoleReOpAc
	 *            角色、资源与操作动作对象
	 * 
	 * @return 角色、资源与操作动作对象
	 */
	Integer readRoleReOpAcByCodeNqIdForInteger(RoleReOpAcDto readRoleReOpAc);

	/**
	 * 读取:角色、资源与操作动作
	 * 
	 * @param readRoleReOpAc
	 *            角色、资源与操作动作对象
	 * 
	 * @return 角色、资源与操作动作对象
	 */
	Integer readRoleReOpAcBy2ForInteger(RoleReOpAcDto readRoleReOpAc);

	/**
	 * 读取:角色、资源与操作动作
	 * 
	 * @param readListRoleReOpAc
	 *            角色、资源与操作动作对象
	 * 
	 * @return 角色、资源与操作动作对象集合
	 */
	List<Integer> readListRoleReOpAcBy1(RoleReOpAcDto readRoleReOpAc);

	/**
	 * 读取:角色、资源与操作动作
	 * 
	 * @param readListRoleReOpAc
	 *            角色、资源与操作动作对象
	 * 
	 * @return 角色、资源与操作动作对象集合
	 */
	List<Integer> readListRoleReOpAcBy2(RoleReOpAcDto readRoleReOpAc);

	/**
	 * 查询:角色、资源与操作动作
	 * 
	 * @param getRoleReOpAc
	 *            角色、资源与操作动作对象
	 * 
	 * @return 角色、资源与操作动作对象
	 */
	RoleReOpAcDto getRoleReOpAcBy1(RoleReOpAcDto getRoleReOpAc);

	/**
	 * 查询:角色、资源与操作动作
	 * 
	 * @param getRoleReOpAc
	 *            角色、资源与操作动作对象
	 * 
	 * @return 角色、资源与操作动作对象
	 */
	RoleReOpAcDto getRoleReOpAcById(RoleReOpAcDto getRoleReOpAc);

	/**
	 * 查询:角色、资源与操作动作
	 * 
	 * @param findRoleReOpAc
	 *            角色、资源与操作动作对象
	 * 
	 * @return 角色、资源与操作动作对象集合
	 */
	List<RoleReOpAcDto> findRoleReOpAcBy1(RoleReOpAcDto findRoleReOpAc);

	/**
	 * 查询:角色、资源与操作动作
	 * 
	 * @param findRoleReOpAc
	 *            角色、资源与操作动作对象
	 * 
	 * @return 角色、资源与操作动作对象集合
	 */
	List<RoleReOpAcDto> findRoleReOpAcBy2(RoleReOpAcDto findRoleReOpAc);
	
	/**
	 * 分页:角色、资源与操作动作
	 * 
	 * @param paginationRoleReOpAc
	 *            角色、资源与操作动作对象
	 * 
	 * @return 角色、资源与操作动作分页对象
	 */
	PaginationDto<RoleReOpAcDto> paginationRoleReOpAcBy1ForRoleReOpAcList(RoleReOpAcDto paginationRoleReOpAc);
			
	/**
	 * 分页
	 * 
	 * @param paginationRoleReOpAc
	 *            角色、资源与操作动作对象
	 * 
	 * @return 角色、资源与操作动作分页对象
	 */
	PaginationDto<Map<String, Object>> paginationRoleReOpAcBy1ForMapList(RoleReOpAcDto paginationRoleReOpAc);
}